/*
 * Filename:    ICaseCheckService.java
 * Copyright:   2014 中国平安保险（集团）股份有限公司 版权所有
 * Company:     平安科技养老险及健康险系统开发部
 * Create at:   2014-11-20
 */
package com.paic.mhis.hcpms.audit.biz.service;

import com.alibaba.fastjson.JSONObject;
import com.paic.mhis.core.auth.biz.service.UserDetails;
import com.paic.mhis.hcpms.audit.dto.AuditCaseReportDTO;
import com.paic.mhis.hcpms.audit.dto.AuditDispatchUserRequestDTO;
import com.paic.mhis.hcpms.audit.dto.AuditDispatchUserResponseDTO;
import com.paic.mhis.hcpms.audit.dto.AuditNotificationDTO;
import com.paic.mhis.hcpms.audit.dto.AuditReportRespDTO;
import com.paic.mhis.hcpms.audit.dto.BatchSubmitResponseDTO;
import com.paic.mhis.hcpms.audit.dto.CaseCheckConfirmRequestDTO;
import com.paic.mhis.hcpms.audit.dto.CaseCheckResponseDTO;

public interface ICaseCheckService {

	/**
	 * 处理批量提交稽核审核案件
	 * 
	 * @param caseCodes
	 * @return
	 */
	public BatchSubmitResponseDTO processBatchSubmitInfo(String[] caseCodes,
			UserDetails user, String opinion, String opinionDesc)
			throws Exception;

	/**
	 * 根据案件号加载对应的事件处理,调查结果,稽核项目,稽核结果
	 * 
	 * @param caseCode
	 * @return
	 */
	public CaseCheckResponseDTO loadCaseCheckResponseDTOByCaseCode(
			String caseCode, String problemNo, String username);

	/**
	 * 审核岗位对于稽核的审核确定处理逻辑
	 * 
	 * @param opinionDto
	 */
	public void processCaseCheckAuditConfirm(CaseCheckConfirmRequestDTO vo,
			UserDetails user, JSONObject transferJson) throws Exception;

	/**
	 * 处理暂存事件
	 * 
	 * @param requestBean
	 * @param type
	 * @return
	 */
	public AuditDispatchUserResponseDTO processTempSave(
			AuditDispatchUserRequestDTO requestBean, String type,
			JSONObject transferJson, String userName) throws Exception;

	/**
	 * 根据案件编码加载对应的稽核报告和稽核告知函信息
	 * 
	 * @param caseCode
	 * @return
	 */
	public AuditReportRespDTO loadReportInfo(String caseCode);

	/**
	 * 更新稽核报告和稽核告知函信息
	 * 
	 * @param reportBean
	 * @param tellReportBean
	 */
	public void updateAuditReportInfoAndNotification(
			AuditCaseReportDTO reportBean, AuditNotificationDTO tellReportBean);

	/**
	 * 审核岗 对案件进行撤销的逻辑处理
	 * 
	 * @param caseCode
	 * @return
	 */
	public void auditCancelProcess(String caseCode, UserDetails user)
			throws Exception;

	public AuditNotificationDTO getAuditNotificationDTO(String caseCode);

	public AuditCaseReportDTO getAuditCaseReportDTOByCaseCode(String caseCode);

}
